#ifndef TestProcTable_h
#define TestProcTable_h

#include <vector>
#include <cppunit/extensions/HelperMacros.h>
#include "ProcTable.h"
#include "Type.h"

class ProcTableTest : public CPPUNIT_NS::TestFixture 
{
	Type::List::Name validNameInput, invalidNameInput, nonExistNameInput;
	Type::List::Proc invalidIndexInput, nonExistIndexInput, expectedIndexList;

	typedef Type::Index::Line StartEndType;
	typedef std::vector<Type::Pair::StartEnd> PairList; 
	PairList validStartEndInput, invalidStartEndInput;
	Type::Pair::StartEnd invalidPair;

	ProcTable procTb;
	std::string msg;

	CPPUNIT_TEST_SUITE( ProcTableTest );
	CPPUNIT_TEST( testInsert );
	CPPUNIT_TEST( testGetIndices );
	CPPUNIT_TEST( testGetNames );
	CPPUNIT_TEST( testGetStartEnd );
	CPPUNIT_TEST( testIsExists );
	CPPUNIT_TEST_SUITE_END();
private:
	void testInsert(Type::List::Name, Type::List::Proc, bool, std::string);
	void testInsertStartEnd(Type::List::Proc, PairList, bool, std::string);
	void testGetIndices(Type::List::Name, bool, Type::List::Proc, bool, std::string);
	void testGetNames(Type::List::Proc, Type::List::Name, bool, std::string);
	void testGetStartEnd(Type::List::Proc, PairList, bool, std::string);
	void testIsExists(Type::List::Name, Type::List::Proc, bool, std::string);
public:
	void setUp();
	void tearDown();

	void testInsert();
	void testGetIndices();
	void testGetNames();
	void testGetStartEnd();
	void testIsExists();
};
#endif